Field of the Invention
The present invention relates in general to computers, and, more particularly, to a system and method to increase performance of non-contiguously written sectors in cache storage subsystems.
Description of the Related Art
A storage subsystem, such as the International Business Machines (IBM®) Enterprise Storage Server (ESS®), will receive Input/Output (I/O) requests directed toward an attached storage system. The attached storage system may comprise an enclosure including numerous interconnected disk drives, such as a Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID Array), Just A Bunch of Disks (JBOD), etc. If I/O requests are received at a faster rate than they can be processed, then the storage subsystem will queue the I/O requests in a storage cache, which may comprise one or more gigabytes of volatile storage, e.g., Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), etc. A copy of certain modified (write) data may also be placed in a non-volatile storage unit (NVS), such as a battery-backup volatile memory, to provide additional protection of write data in the event of a failure at the storage subsystem.
An entry is included in a Least Recently Used (LRU) list for each track in cache. A track can be staged from the storage system for cache to return to a read request. Additionally, write data for a track may be stored in cache before being transferred to the attached storage system. When additional space in cache is needed to buffer additional requested read data and modified data, tracks indicated at the LRU end of the LRU list are destaged to disk. An entry is added to the most recently used (MRU) end of the LRU list for each track added to cache. Each entry in the LRU list comprises a control block that indicates the current status of a track, the location in cache, and the location in the storage system. An additional NVS LRU list is maintained for tracks in the NVS. The cache and NVS LRU lists include entries for tracks in both NVS and cache.
Tracks written with “holes” or non-contiguously written sectors cause slow cached write performance. Holes in tracks result in cache sector misses on each write. In the worst cases, every other sector of the track becomes write modified. Destaging the tracks also results in poor disk write performance since a separate write command must be issued for each sector. On systems using RAID, the destage is further slowed down by the necessity to perform multiple drive operations for each of the single sector writes.
In light of the foregoing, a need exists for a system and method to increase performance in the event of non-contiguously written sectors on a particular track. In addition, the system and method should take advantage of existing system resources and constraints to minimize cost and complexity while maximizing efficiency in a particular implementation.